SUBROUTINE G_GRID
!-----------------------------------------------------------------------
!
! Definition von G:  Gittergleichung
!

      use config,  only : np
      use primvar, only : G, X, MR, Gnorm
      use physco,  only : pi, offset, z1, z2
      use geomvar, only : S_flux
      use gridvar, only : Res, n_tmp, n, beta, tau
      use global,  only : tst
      use RBvar,   only : R_in, R_out


      implicit none

      integer       :: i
      logical, save :: init = .true.

      if (init) then
         write(66,"(a)") "G_grid.f90:   Innenrand: R = R_in ;  i = 4: konstante Gitterkonzentration ;  Aussenrand: R = R_out"
         init = .false.
      end if


!-----------------------------------------------------------------------
!    Randbedingungen
!-----------------------------------------------------------------------

   ! innere Pseudozellen & innere Randbedingung: i=1, i=2, i=3
      G(MR,1)        = X(MR,1) - R_in
      Gnorm(MR,1)    = X(MR,1)
      G(MR,2)        = X(MR,2) - R_in
      Gnorm(MR,2)    = X(MR,2)
      G(MR,3)        = X(MR,3) - R_in
      Gnorm(MR,3)    = X(MR,3)

   ! aeussere Pseudozellen & aeussere Randbedingung: i=np, i=np-1, i=np-2
      G(MR,np)       = X(MR,np) - R_out
      Gnorm(MR,np)   = X(MR,np)
      G(MR,np-1)     = X(MR,np-1) - R_out
      Gnorm(MR,np-1) = X(MR,np-1)
      G(MR,np-2)     = X(MR,np-2) - R_out
      Gnorm(MR,np-2) = X(MR,np-2)

   ! innerster Gitterpunkt IM Gitter: i=4 - konstante Gitterkonzentration
      G(MR,4) = n_tmp(4) - n_tmp(4-1)
      Gnorm(MR,4) = max( n_tmp(4) , n_tmp(4-1)  )


!-----------------------------------------------------------------------
!    Restlicher Bereich
!-----------------------------------------------------------------------

      do i=5,np-3

         G(MR,i) = n_tmp(i) / Res(i) - n_tmp(i-1) / Res(i-1)

!~          Gnorm(MR,i) = max( n_tmp(i) / Res(i), n_tmp(i-1) / Res(i-1) )
         Gnorm(MR,i) = (z1 + tau(i)/tst) * (z1 + z2*beta) *  max( n(i) / Res(i), n(i-1) / Res(i-1) )

      end do

! Abgesehen von der offensichtlichen Substraktion zwischen den Gitterpositionen i und i-1
! stecken in der Gittergleichung noch 2 weitere Differenzenbildungen, und zwar in der
! zeitlichen und der raemlichen Glaettung:
!        n_tmp   = (1 + tau/tst) n - tau/tst nA
!        n_glatt = (1 + 2 beta) n_i - beta (n_i-1 + n_i+1)
!
! Wenn man das ausmultipliziert bekommt man im fuehrenden Term: (1 + tau/tst) (1 + 2 beta) n_i/R_i
! und alle anderen Terme sind von der gleichen Groessenordnung oder kleiner. Daher ist es ausreichend
! diesen Term fuer die Normierung heranzuziehen.

END SUBROUTINE G_GRID

